package com.falcon.domain.req;

import com.falcon.mvc.domain.AbsPageQuery;
import com.falcon.domain.po.TablePO.Fields;
import com.swan.mybatis.condition.Condition;
import com.swan.mybatis.condition.OpType;
import lombok.Data;
import lombok.experimental.Accessors;

import java.util.Date;


/** 代码生成配置
* @author zongf
* @since 2024-03-17
*/
@Data
@Accessors(chain = true)
public class TableQuery extends AbsPageQuery{

    /** 主键 */
    private Long id;

    /** 创建者id */
    private Long creator;

    /** 创建时间 */
    private Date createTime;

    /** 更新者 id */
    private Long updater;

    /** 更新时间 */
    private Date updateTime;

    /** 状态: 0-同步  1-新增 2-删除(数据库中已删除) */
    private Integer status;

    /** 数据库名 */
    private String schemaName;

    /** 表名 */
    private String tableName;

    /** 模块儿名 */
    private String moduleName;

    /** java 映射名称 */
    private String className;

    /** 注释 */
    private String comment;

    /** 是否生成po */
    private Integer hasPo;

    /** 是否生成mapper */
    private Integer hasMapper;

    /** 是否生成mapperXml */
    private Integer hasMapperXml;

    /** 是否生成do */
    private Integer hasDo;

    /** 是否生成service api */
    private Integer hasServiceApi;

    /** 是否生成service impl */
    private Integer hasService;

    /** 是否生成request */
    private Integer hasRequest;

    /** 是否生成query */
    private Integer hasQuery;

    /** 是否生成controller */
    private Integer hasController;

    /** 作者 */
    private String author;

    /** 是否生成 ts 接口 */
    private Integer hasApiTs;

    /** 是否生成 index.vue */
    private Integer hasIndexVue;

    /** 编辑组件类型: Modal/Drawer */
    private String editComponent;

    /** 主页模板: 类型 */
    private Integer indexTemplate;

    /** 父菜单id */
    private Long parentMenu;

    @Override
    public Condition toCondition() {

        Condition condition = Condition.newInstance()
                .and(Fields.tableName, OpType.leftLike, this.tableName)
                .and(Fields.moduleName, OpType.equals, this.moduleName)
                .and(Fields.comment, OpType.like, this.comment)
                ;

        return condition;
    }

}
